package com.szrt.day20170424;


import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;

import org.junit.Test;

public class InputStreamTest {
	
	
	
	@Test
	public void inputStreamReaderTest() throws Exception {
		
		
		System.out.println(100%3);
		
		//侦察兵
		File file = new File("io1704/sds.txt");
		
		//派小部队
		InputStream  is  = new FileInputStream(file);
		
		//派大部队
		InputStreamReader isr  = new InputStreamReader(is);
		
		char cbuf[] = new char[3];
		
		int len =-1;
		
		while((len = isr.read(cbuf))!=-1){
			String string  =new String(cbuf, 0, len);
			System.out.print(string);
			
		}
		isr.close();
		is.close();
		
		
	}
	@Test
	public void inputStreamReader22Test() throws Exception {
		
		//侦察兵
		File file = new File("io1704/sds.txt");
		
		//派小部队
		InputStream  is  = new FileInputStream(file);
		//派大部队
		//InputStreamReader isr  = new InputStreamReader(is);
		
		byte cbuf[] = new byte[2];
		
		int len =-1;
		
		while((len = is.read(cbuf))!=-1){
			String string  =new String(cbuf, 0, len);
			System.out.print(string);
			
		}
		//isr.close();
		is.close();
		
		
	}
	
	
	@Test
	public void bufferedReaderTest() throws Exception {
		
		//侦察兵
		File file = new File("io1704/sds.txt");
		
		//派小部队
		Reader reader  = new FileReader(file);
		
		//派大部分
		BufferedReader br  = new BufferedReader(reader);
		
		String jieguo="";
		//1行1行地读
		while((jieguo = br.readLine()) != null){
			System.out.println(jieguo);
		}
		
		
		br.close();
		reader.close();
		
		
	}
	
	
	@Test
	public void bufferedInputStreamTest() throws Exception {
		//侦察兵
		File file = new File("io1704/zdb.txt");
		
		//派小部队
		InputStream  is  = new FileInputStream(file);
		
		//派大部分
		BufferedInputStream bis = new BufferedInputStream(is);
		
		int len  =-1;
		
		byte[] b = new byte[3];
		while((len = bis.read(b)) !=-1){
			String string = new String(b, 0, len);
			System.out.print(string);
		}
		
		bis.close();
		is.close();
		
	}
	
	
	
	@Test
	public void readAll022() {
		
		//1 侦测  File作用相当于侦察兵   只侦察不杀敌 相对路径
		File file = new File("io1704/zdb3333.txt");
		
		//2 杀敌   大部队： 只杀敌不侦察  ： 建立在侦察兵File的继承上。
		InputStream is=null;
		try {
			//文件输入流 FileInputStream
			is = new FileInputStream(file);
			
			//3 表示机枪扫射 1次性可以杀3个 但是如果只有2个鬼子了。3颗子弹只能杀死2个人?
			byte[] b = new byte[3];
			
			//4 len里卖保存的是真正读取了多少个  3颗子弹只能杀死2个人
			//大部队is用机枪b去杀入 真正杀了多少个保存在len里面  备注 如果人杀完了 返回-1
			int len = -1;
			while((len=is.read(b)) !=-1){
				//5 字节数组如何转化成1个字符串
				//String string  = "zsr";
				String string  = new String(b, 0, len);
				System.out.print(string);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			//6 关闭流
			if(null != is){
				try {
					is.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
		
	}
	@Test
	public void readAll() {
		
		//1 侦测  File作用相当于侦察兵   只侦察不杀敌
		File file = new File("c:/lyl/zdb.txt");
		
		//2 杀敌   大部队： 只杀敌不侦察  ： 建立在侦察兵File的继承上。
		InputStream is=null;
		try {
			//文件输入流 FileInputStream
			is = new FileInputStream(file);
			
			//3 表示机枪扫射 1次性可以杀3个 但是如果只有2个鬼子了。3颗子弹只能杀死2个人?
			byte[] b = new byte[3];
			
			//4 len里卖保存的是真正读取了多少个  3颗子弹只能杀死2个人
			//大部队is用机枪b去杀入 真正杀了多少个保存在len里面  备注 如果人杀完了 返回-1
			int len = -1;
			while((len=is.read(b)) !=-1){
				//5 字节数组如何转化成1个字符串
				//String string  = "zsr";
				String string  = new String(b, 0, len);
				System.out.print(string);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			//6 关闭流
			if(null != is){
				try {
					is.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
		
	}
	
	
	
	@Test
	public void readAll05() throws Exception {
		
		//1 侦测  File作用相当于侦察兵   只侦察不杀敌
		File file = new File("c:/lyl/zdb.txt");
		
		//2 杀敌   大部队： 只杀敌不侦察  ： 建立在侦察兵File的继承上。
		InputStream is = new FileInputStream(file);
		
		//表示机枪扫射 1次性可以杀3个 但是如果只有2个鬼子了。3颗子弹只能杀死2个人?
		byte[] b = new byte[3];
		
		//len里卖保存的是真正读取了多少个  3颗子弹只能杀死2个人
		int len = -1;
		while((len=is.read(b)) !=-1){
			//字节数组如何转化成1个字符串
			//String string  = "zsr";
			String string  = new String(b, 0, len);
			System.out.print(string);
		}
		
		is.close();
	}
	@Test
	public void readAll04() throws Exception {
		
		//1 侦测  File作用相当于侦察兵   只侦察不杀敌
		File file = new File("c:/lyl/zdb.txt");
		
		//2 杀敌   大部队： 只杀敌不侦察  ： 建立在侦察兵File的继承上。
		InputStream is = new FileInputStream(file);
		
		//表示机枪扫射 1次性可以杀3个 但是如果只有2个鬼子了。3颗子弹只能杀死2个人?
		byte[] b = new byte[3];
		
		//len里卖保存的是真正读取了多少个  3颗子弹只能杀死2个人
		int len = is.read(b);
		
		
		//System.err.println(len);
		
		while(len !=-1){
			
			//字节数组如何转化成1个字符串
			//String string  = "zsr";
			String string  = new String(b, 0, len);
			System.out.print(string);
			
			//接着杀
			len = is.read(b);
			//System.err.println(len);
		}
		
		is.close();
		
		
		
	}
	@Test
	public void readAll03() throws Exception {
		
		//1 侦测  File作用相当于侦察兵   只侦察不杀敌
		File file = new File("c:/lyl/zdb.txt");
		
		//2 杀敌   大部队： 只杀敌不侦察  ： 建立在侦察兵File的继承上。
		InputStream is = new FileInputStream(file);
		
		//表示机枪扫射 1次性可以杀3个 但是如果只有2个鬼子了。3颗子弹只能杀死2个人?
		byte[] b = new byte[3];
		
		//len里卖保存的是真正读取了多少个  3颗子弹只能杀死2个人
		int len = is.read(b);
		
		
		//System.err.println(len);
		
		while(len !=-1){
			
			//System.err.println(b.length);
			for(int index=0; index<len;index++){
				int as = b[index];
				System.out.print((char)as);
			}
			
			//接着杀
			len = is.read(b);
			//System.err.println(len);
		}
		
		is.close();
		
		
		
	}
	
	@Test
	public void readAll02() throws Exception {
		//1 侦测  File作用相当于侦察兵   只侦察不杀敌
		File file = new File("c:/lyl/zdb.txt");
		
		//2 杀敌   大部队： 只杀敌不侦察  ： 建立在侦察兵File的继承上。
		InputStream is = new FileInputStream(file);
		
		
		//狙击步枪
		int ascii=-1;
		while((ascii =is.read()) != -1){
			System.out.print((char)ascii);
			
		}
		
		is.close();
		
	}
	
	@Test
	public void readAll01() throws Exception {
		
		//1 侦测  File作用相当于侦察兵   只侦察不杀敌
		File file = new File("c:/lyl/zdb.txt");
		
		//2 杀敌   大部队： 只杀敌不侦察  ： 建立在侦察兵File的继承上。
		InputStream is = new FileInputStream(file);
		
		
		int counter=0;
		
		//read 狙击步枪  一次只能杀1个  循环  while  jieguo等于-1 没人  如果不等于-1 说明文件中有东东 
		//read返回的东西就是它读到地那个字符 杀死的那个敌人
		int jieguo=is.read();
		System.out.println(jieguo);
		
		while(jieguo!=-1){
			//说明没有到达文件的末尾
			System.out.print((char)jieguo);
			
			counter++;
			System.out.println(counter);
			//接着杀
			jieguo =is.read();
		}
		
		is.close();
		
	}
	@Test
	public void readOne() throws Exception {
		
		//1 侦测  File作用相当于侦察兵   只侦察不杀敌
		File file = new File("c:/lyl/zdb.txt");
		
		//2 杀敌   大部队： 只杀敌不侦察  ： 建立在侦察兵File的继承上。
		InputStream is = new FileInputStream(file);
		
		
		//read 狙击步枪
		int ascii= is.read();
		
		System.out.println(ascii);
	}

}
